#ifndef __IMPRESOR_DE_RESULTADOS_H__
#define __IMPRESOR_DE_RESULTADOS_H__

#include <string>
#include <iostream>

#include "resultado.h"
#include "descriptor_alumno.h"
#include "pila.h"
#include "arbol_binario.h"
#include "condicion_de_relacion.h"

class ImpresorDeResultados{

private:

	/**
	 * Precondiciones: condicion de relacion valida
	 * Postcondiciones: Retorna un string correspondiente al descriptor
	 *                  y su estado.
	 */
	std::string traducirNodoResultado (CondicionDeRelacion);

	/**
	 * Precondiciones:-
	 * Postcondiciones: Imprime por pantalla las relacion
	 * 					acumulada
	 */
	void imprimirColaDeResultados (Pila<CondicionDeRelacion>&);

	/**
		 * Precondiciones:Pila vacia.
		 * Postcondiciones:Imprime por pantalla las relaciones encontradas
		 */
	void imprimirArbolNodoResultado (NodoArbolBinario<DescriptorAlumno>*, Pila<CondicionDeRelacion>&);

public:
	/**
	 * Precondiciones: Resultado valido
	 * Postcondiciones:Imprime por pantalla las relaciones encontradas
	 */
	void imprimirResultado (Resultado&);
};

#endif /* __IMPRESOR_DE_RESULTADOS_H__ */
